/*
    Copyright 2009 Semantic Discovery, Inc. (www.semanticdiscovery.com)

    This file is part of the Semantic Discovery Toolkit.

    The Semantic Discovery Toolkit is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    The Semantic Discovery Toolkit is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with The Semantic Discovery Toolkit.  If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;

namespace SemanticDiscovery.Util {
  /**
   * Utility methods for working with counters, etc.
   * <p>
   * @author Spence Koehler
   */
  public class MathUtil {
    /// Create a right-justified (space padded) string with the given length.
    public static string IntegerString(int i, int places) {
      return IntegerString(i, places, ' ');
    }

    /// Create a right-justified (c-padded) string with the given length.
    public static string IntegerString(int i, int places, char c) {
      StringBuilder result = new StringBuilder();

      result.Append(i.ToString());
      while (result.Length < places) 
        result.Insert(0, c);

      return result.ToString();
    }

    /// Get the number of digits for the num.
    public static int GetNumDigits(int num) {
      int result = (num < 1) ? 1 : 0;
      
      while (num >= 1) {
        num /= 10;
        ++result;
      }
      
      return result;
    }
  }
}
